package top.as.sean.biz.system;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import top.as.sean.dao.dto.system.RoleAdd;
import top.as.sean.dao.dto.system.RoleAuth;
import top.as.sean.dao.dto.system.RoleEdit;
import top.as.sean.dao.dto.system.RolePage;
import top.as.sean.dao.entity.pojo.system.Role;
import top.as.sean.dao.vo.system.RoleMenuVo;
import top.as.sean.dao.vo.system.RoleVo;

import java.util.List;

/**
 * 角色
 *
 * @author: ArchieSean
 * @create: 2022/11/8
 */
public interface IRole extends IService<Role> {
    /**
     * 新增角色
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean addRole(RoleAdd dto);

    /**
     * 角色分页查询
     *
     * @param dto 入参
     * @return page
     */
    Page<RoleVo> getPage(RolePage dto);

    /**
     * 编辑角色
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean editRole(RoleEdit dto);

    /**
     * 删除角色
     *
     * @param id 角色id
     * @return boolean
     */
    Boolean deleteRole(List<Long> id);

    /**
     * 角色授权
     *
     * @param roleId 角色id
     * @return obj
     */
    RoleMenuVo getMenuTree(Long roleId);

    /**
     * 角色管理-授权
     * @param dto 入参
     * @return boolean
     */
    Boolean authorization(RoleAuth dto);

    /**
     * 查询所有可用角色
     * @return list
     */
    List<Role> getAll();
}
